0181 prisma orm 리서치

README

이 문서는 프리즈마 ORM을 본격적으로 사용하기에 앞서 인상과 TypeORM과의 차이점을 이해하고 넘어가기 위해 작성되었습니다. 마침 코드팩토리의 백엔드 아카데미 - 한 번에 끝내는 NestJS 패키지 - 기초부터 MSA까지 in Fast campus 강의에서도 해당 내용을 다루기 때문에 좀 더 빠른 "이론"적이고 "패러다임" 위주의 내용을 정리해볼 수 있도록 하면 좋을 것 같습니다.

Introduction

Prisma는 다른 ORM들과 달리 자기만의 언어가 존재한다. 그 언어를 PSL (Prisma Schema Language)라고 부르며, TypeORM이 타입스크립트로 테이블을 "일반화"한 것에 반해 Prisma는 PSL을 기준으로 "구체적인" 코드를 생성해준다는 점이 도드라진 특징이다.

그럼 PSL로 뭘 정의할 수 있느냐? 연결할 DB 커넥션을 위한 정보 datasource, 실제 코드를 작성해줄 generator, generator에 클라이언트를 저장해야해서 generator client, 테이블 정보를 정의하는 model, FK 컬럼에 릴레이션을 정의하는 애트리뷰트 @relation(fields, references, onDelete, ...)

애트리뷰트! 컬럼에 속성을 부여해준다. 간단히 톺아보았을 때, 다음과 같다:

Prisma는 코드를 직접 생성해주기 때문에 스키마 변경이 이루어지면 CLI 명령어 prisma generate를 매번 해주어야 한다. generate된 결과물은 신기하게도 node_modules 안에 들어간다!